"""
存储桶 ORM 模型
"""
from sqlalchemy import String, Boolean, SmallInteger, BigInteger
from sqlalchemy.orm import Mapped, mapped_column

from axiom_boot.core.types import BigInt
from axiom_boot.database import BaseModel


class SysFileBucket(BaseModel):
    """
    存储桶信息表 ORM 模型。
    每个桶对应一个独立的存储命名空间，例如一个知识库。
    """
    __tablename__ = "sys_file_bucket"

    # 显式重写 id 以符合【主键覆盖原则】
    id: Mapped[BigInt] = mapped_column(BigInteger, primary_key=True, comment="主键ID (雪花ID)")

    bucket_name: Mapped[str] = mapped_column(String(100), unique=True, nullable=False, index=True, comment="存储桶唯一名称 (用于API调用)")
    display_name: Mapped[str] = mapped_column(String(255), nullable=False, comment="存储桶的显示名称 (用于UI展示)")
    description: Mapped[str | None] = mapped_column(String(500), nullable=True, comment="存储桶的描述信息")
    
    is_knowledge_base: Mapped[int] = mapped_column(SmallInteger, nullable=False, default=0, comment="是否作为知识库 (0: 否, 1: 是)")
    embedding_profile: Mapped[str] = mapped_column(String(50), nullable=False, default="default", comment="使用的嵌入模型配置") 